package com.sunnada.edu.system.pub.securityFilter;

/**
 * SQL注入校验类
 */
public class SqlInjection {
	private static String inj_str = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|--|+|,";
	private static String inj_str2 = "<|>|\"|\\|%|;|(|)|&|+|-|'";
	public static String transactSQLInjection(String str) {
		return str.replaceAll(".*([';]+|(--)+).*", " ");
	}
	
	/**
	 * SQL注入校验，对输入的特殊字符进行过滤包括：< > " \ % ; ( ) & + - ' 
	 * 适用于IBM appscan扫描
	 * @param str
	 * @return 有校验到，就返回真。
	 */
	public static boolean sql_inj2(String str) {
		String[] inj_stra = inj_str2.split("\\|");
		if("".equals(str) || str == null){
			return true;
		}
		for (int i = 0; i < inj_stra.length; i++) {
			if (str.indexOf(inj_stra[i]) >= 0) {
				return true;
			}
		}
		return false;
	}
	
	/**
	 * SQL注入校验，判断关键字
	 * 不适合IBM的扫描
	 */
	public static boolean sql_inj(String str) {
		String[] inj_stra = inj_str.split("\\|");

		for (int i = 0; i < inj_stra.length; i++) {
			if (str.indexOf(" " + inj_stra[i] + " ") >= 0) {
				return true;
			}
		}
		return false;
	}
	
}
